﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using LayerEntity.Sistema;
using LayerEntity.Persona;
using LayerEntity.Creditos;
using LayerLogic;

namespace System2012.Creditos
{
    public partial class frmEditarAnticipo : DevExpress.XtraEditors.XtraForm
    {
        string id_anticipo;
        private string varIdCliente;
        private int varIdDireccion;
        /// <summary>
        /// Indica si estamos editanado o creando uno Nuevo
        /// 0: Nuevo Documento
        /// 1: Editando y Guardando
        /// </summary>
        int operacion = 1;
        public frmEditarAnticipo()
        {
            InitializeComponent();
        }

        public frmEditarAnticipo(DataTable dtb,int index)
        {
            InitializeComponent();
            txtIdCliente.Text = dtb.Rows[index]["id_cliente"].ToString();
            varIdCliente=  dtb.Rows[index]["id_cliente"].ToString();
            varIdDireccion=int.Parse(dtb.Rows[index]["id_dricliente"].ToString());
            txtCliente.Text = dtb.Rows[index]["cliente"].ToString();
            txtDocCliente.Text = dtb.Rows[index]["doc_persona"].ToString();
            txtDirCliente.Text = dtb.Rows[index]["dir_direccionpersona"].ToString();
            id_anticipo = dtb.Rows[index]["id_anticipo"].ToString();
            if (!BGWListCab.IsBusy) BGWListCab.RunWorkerAsync();
        }
        private void UpdateAnticipo()
        {
             ECreditos obCred = new ECreditos();
             obCred.Id_anticipo = id_anticipo;
            obCred.Item = this.varIdDireccion;
            obCred.IdPersona = varIdCliente;
            obCred.Facturado = "N";
            obCred.Glosa = "";
            obCred.Idusuario = "";
            obCred.Tipo_Anticipo = "F";
            obCred.Id_Moneda = 0;
            object[] result = System2012.SystemUtils.RecordManagerCreditos.UpdateCabAnticipos(obCred,  this.operacion == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
            switch (result[0].ToString())
            {
                case "0":
                    XtraMessageBox.Show(this, "PROCESO EFECTUADO CON EXITO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                    break;
                case "AT-1":
                    XtraMessageBox.Show(this, "INCONSITENCIA INESPERADA INTENTE NUEVAMENTE", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    break;
                case "AT-2":
                    XtraMessageBox.Show(this, "SELECCIONE CORRECTAMENTE EL REGISTRO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    break;
                 default : 
                    XtraMessageBox.Show(this, string.Format("CODIGO DE ERROR \n\n",result[0]), "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    break;
            }
           
        }
        private void SeleccionarCliente()
        {
            Persona.BuscarPersona b = new System2012.Persona.BuscarPersona(LayerEntity.Persona.EnumTipoPersona.Proveedor);
            b.ShowDialog();
            if (b.Estado)
            {
                IEPersona per = b.Persona;
                this.txtDocCliente.EditValue = per.NumeroDocumento;
                this.txtCliente.EditValue = per.RazonSocial;
                this.varIdCliente = per.IdPersona;
                EDireccion dir = per.GetAddress(b.IdAddressSelected);
                if (dir != null)
                {

                    varIdDireccion = dir.Item;
                    txtDirCliente.EditValue = dir.Direccion;
                    /* LayerEntity.Sistema.EUbigeo ubi = SystemUtils.RecordManagerCommonList.GetUbigeoByUbigeo(dir.Ubigeo);
                     if (ubi != null)
                     {
                         TxtUbigeo.EditValue = string.Concat(ubi.Ubigeo, "=>", ubi.ToString());
                     }*/
                }
            }
        }
        private void frmEditarAnticipo_Load(object sender, EventArgs e)
        {

        }

        private void BGWListCab_DoWork(object sender, DoWorkEventArgs e)
        {
            ESistema obj = new ESistema();
            StringBuilder cadena = new StringBuilder();
            cadena.AppendFormat("where id_anticipo='{0}'", id_anticipo);
            obj.Condicion = cadena.ToString();
            e.Result = System2012.SystemUtils.RecordManagerCreditos.getCabAnticipos(obj);
        }

        private void BGWListCab_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            DataTable res = (DataTable)e.Result;
            if (res.Rows.Count > 0)
            {
                txtIdProducto.Text = res.Rows[0]["id_producto"].ToString();
                txtProducto.Text = res.Rows[0]["producto"].ToString();
                txtFecha.Text = res.Rows[0]["fecha"].ToString();
            }
        }

        private void txtIdCliente_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                SeleccionarCliente();
            }
        }

        private void txtIdCliente_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            SeleccionarCliente();
        }

        private void btnGrabar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            UpdateAnticipo();
        }

        private void btnSalir_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Close();
        }
    }
}